package cn.demoncat.util.io.entity;

import java.io.Serializable;
import java.util.Objects;

import cn.demoncat.util.lang.LongUtil;
import cn.demoncat.util.lang.StringUtil;
import cn.demoncat.util.lang.constant.StringConstant;
import lombok.Data;

/**
 * Linux ls 命令的文件
 * 
 * @author 延晓磊
 *
 * @since 2019年6月18日
 */
@Data
public class LsFile implements Serializable{
 
	private static final long serialVersionUID = 1L;
	
	// 权限
	private String chmod;
	// 所属组
	private String group;
	// 所属人
	private String user;
	// 字节
	private Long size;
	// 更新时间
	private String date;
	// 目录
	private String dir;
	// 名称
	private String name;
	// 全名
	private String fullName;
	// 类型
	private String type;
	
	
	/**
	 * 类型
	 */
	public static final class FileType{
		// 目录
		public static final String DIR = "1";
		// 文件
		public static final String FILE = "2";
	}
	
	/**
	 * 判断是否为文件（非.和..）
	 * 
	 * @param fileName
	 * @return
	 * 
	 * @author 延晓磊
	 *
	 * @since 2019年6月18日
	 */
	public static boolean isFile(String fileName) {
		return !(fileName.equals(".") || fileName.equals(".."));
	}
	
	/**
	 * 创建文件
	 * 
	 * @param dir		目录
	 * @param line		查询的行
	 * @return
	 * 
	 * @author 延晓磊
	 *
	 * @since 2019年6月18日
	 */
	public static LsFile create(String dir, String line) {
		// 目录
		if (!dir.endsWith(StringConstant.SEPARATOR)) {
			dir += StringConstant.SEPARATOR;
		}
		// 切割
		String[] arr = StringUtil.splitSpace(line);
		// 整合
		LsFile file = new LsFile();
		file.setDir(dir);
		file.setType(arr[0].startsWith("d") ? FileType.DIR : FileType.FILE);
		file.setChmod(arr[0]);
		file.setGroup(arr[2]);
		file.setUser(arr[3]);
		file.setSize(LongUtil.valueOfZero(arr[4]));
		file.setDate(arr[5] + StringConstant.SPACING + arr[6] + StringConstant.SPACING + arr[7]);
		file.setName(arr[8]);
		file.setFullName(dir + arr[8]);
		return file;
	}

}
